Components of a computer system often depend on each other. In such a case, one component can only be executed when the other component on which it depends is provided. However, when testing a computer system, it is desirable to test one component at a time. Consider for example the common scenario where the components of a system are developed separately: It should be possible to test each component in isolation while it is still being developed, since the other components are not available yet. Or, consider the scenario where a small component under test has low resource requirements, but depends on a component with high resource consumption. The tests for the small component would become resource-consuming as well, and soon the whole testing effort does not scale. Also previously written tests often are re-run when a component is modified. It can also be expensive to re-run tests that depend on other time intensive objects that may not have been modified. Or, consider the scenario where a component allows user-written “plug-in” components, such as an operating system which allows user-supplied device drivers. In such a situation, the user-supplied device drivers may not be available or conceived when the operating system designed to communicate with them is developed and tested.